/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package colloque.servlets;

import colloque.Utilisateur;
import colloque.forms.ConnexionForm;
import colloque.helpers.SecurityHelper;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Connexion extends HttpServlet {
    public static final String ATT_USER         = "utilisateur";
    public static final String ATT_FORM         = "form";
    public static final String ATT_SESSION_USER = "sessionUtilisateur";
    public static final String VUE_ERREUR       = "/jsp/connexion.jsp";
    public static final String VUE_CONNECTE     = "/jsp/connecte.jsp";

    @Override
    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        /* Affichage de la page de connexion */
        SecurityHelper security = new SecurityHelper(request.getSession());
        if (security.isAuthenticated() == false) {
            this.getServletContext().getRequestDispatcher(VUE_ERREUR).forward(request, response);
        } else {
            response.sendRedirect("Administration");
        }
        
    }

    @Override
    public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
        /* Préparation de l'objet formulaire */
        ConnexionForm form = new ConnexionForm();

        /* Traitement de la requête et récupération du bean en résultant */
        Utilisateur utilisateur = form.connecterUtilisateur(request);

        /* Récupération de la session depuis la requête */
        HttpSession session = request.getSession();

        /* Stockage du formulaire et du bean dans l'objet request */
        request.setAttribute(ATT_FORM, form );
        request.setAttribute(ATT_USER, utilisateur);

        
        /**
         * Si aucune erreur de validation n'a eu lieu, alors ajout du bean
         * Utilisateur à la session, sinon suppression du bean de la session.
         */
        if (form.getErreurs().isEmpty()) {
            session.setAttribute(ATT_SESSION_USER, utilisateur);
            response.sendRedirect("Administration");
        } else {
            session.setAttribute(ATT_SESSION_USER, null );
            this.getServletContext().getRequestDispatcher(VUE_ERREUR).forward(request, response);
        }
    }
}